package com.dyna.gateway.config;

import com.dyna.gateway.handle.ValidateCaptchaCodeHandler;
import com.dyna.gateway.handle.ValidateQrCodeHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.MediaType;
import org.springframework.web.reactive.function.server.RequestPredicates;
import org.springframework.web.reactive.function.server.RouterFunction;
import org.springframework.web.reactive.function.server.RouterFunctions;

import javax.annotation.Resource;

/**
 * 路由配置信息
 * 通过函数式编程的方式，在Spring WebFlux应用中注册了一个新的路由规则。根据这条规则，任何满足条件的HTTP GET请求（路径为/code且接受文本格式响应）都会被转发给validateCodeHandler进行处理。这种方式提供了一种灵活、强大的手段来构建WebFlux应用程序的路由层。
 * @author admin
 */
@Configuration
public class RouterFunctionConfiguration
{
    @Resource
    private ValidateCaptchaCodeHandler validateCaptchaCodeHandler;
    @Resource
    private ValidateQrCodeHandler validateQrCodeHandler;

    @SuppressWarnings("rawtypes")
    @Bean
    public RouterFunction routerFunction()
    {
        return RouterFunctions.route()
                .GET("/captchaImage", RequestPredicates.accept(MediaType.TEXT_PLAIN), validateCaptchaCodeHandler)
                .GET("/qrCode", RequestPredicates.accept(MediaType.TEXT_PLAIN), validateQrCodeHandler)
                .build();
    }

}